C# and .NET: a replay

Nuh

Background

The first language I learnt was Python - with a conforming syntax to Mathematical logic and terminology, while being user-friendly. Following a bit of research, I began to learn C# despite temptation to try and conquer C and C++ (I did try but didn’t hang around).

Here are quick-fire Q&A’s regarding this post:

What am I doing?: relearning C# and .NET

Why?: To become a full-stack developer. I have been a fully-focused Front End specialist for the last 3 years. Time has come when I can confidently expand

How are you going to re-learn?: That’s a very good question, and it is exactly what this post is going to capture!

Strategy

To form a strategy, I need to take account for what I have first:

  • What do I have or know already?
    • Being a Front End developer in both JavaScript and .NET ecosystems lends awareness of what BE structure and code looks like, as well as integrations with external things e.g. CMS

    • a former CCNA student, Azure Fundamentals-certified (dev-associate-in-progress) which enables me to skip general lessons about networks and how the internet or the machine works

    • Clarity on the boundary of BE and FE, many concepts of development such as DRY, DI, Frameworks, Packages, Patterns etc and being able to recognise 3rd party services or packages

    • I have the advantage of today’s GPTs to assist when other explanations are too — let’s say — sleep-inducing

    • I have access to senior and seasoned developers to ask

  • What is my goal? specific intention I have in mind for .NET and C#
    • To learn and build end to end web applications, I will ignore anything about desktop / mobile / {insert platform name} development using C# and .NET
    • I will most likely stick to ASP.NET / ASP.NET Core
    • I will ignore anything advanced or domain specific such as caching, message queues etc. I can learn them on the job
    • Gaining clarity on concepts e.g. MVC, OOP, Middlewares, Routing, EF/Core, etc
    • Solely focusing on BE for Web - narrows down the vast options from desktop, mobile, api etc
    • Knowing the boundaries of each component of BE responsibility i.e. when does DB get involved, why is it BE responsibility to maintain DB? when does BE deal with CDNs and deployment?
  • What are my opportunities? my advantages beside my brain e.g. people and tools that can help
    • I have senior BE devs that I can ask for help or discuss problems with
    • I have my aforementioned knowledge / insights
  • What are my challenges? anything I hated before? any physical or mental blockers to my progress?
    • I was inundated by the variety of ways to build with .NET and the vast disjointed sources of info available online. I just couldn’t see a map of how to traverse this legacy in 2020. Today, this blocker is gone but I will note it down here for archival purposes
      • What are these: ASP.NET, .NET, ASP.NET Core, .NET Core
      • Why do we use EF and why does it matter?
      • Where do things start and why are there so many magical things?
      • Which part of what I saw before or attempted is pure C# and which parts is framework lingo?
      • Why do we use Visual Studio? It feels so heavy
    • Time! When I had all the time, I struggled to find the map to using it well. Today, I have the map but rarely the time!
    • Practical experience! What good is knowledge if it isn’t acted on? As I my time outside work is limited (and filled with a lot of personal commitments), I need to push this to be my main day job — and that’s really the only way to get professional with this
  • How can I verify the progress I made?
    • Being able to go through a project and explain the key components, how they connect and why I made choices where choices had to be made
    • Being able and comfortable to patch bugs on any project i.e. can take support tickets to resolution
    • Ready to start contributing to active development of projects

Similarities between stacks

There are a lot of similarities between programming languages, and by extension, frameworks. They just normally happen to have different names.

Application

  1. I have watched a quick video on VS vs Visual Studio - it blew my mind. Finally, I understood and accepted VS. I would have wished that it was this easy long time ago, but I also know that I appreciate this explanation so much because of my experience with VS Code, running away from VS into the terminal, and knowledge on concepts such as definition of framework etc

  2. I looked up the path of a .net / c# developer on roadmap.sh. This gave me clarity on which parts I already know and which parts I don’t care about such as streaming with socket, gRPC etc.

  3. Watched quick intro videos on C#, .NET and each specific version to see differences between them, also on MVC, MVVM etc.

  4. Spoke to someone that recently went through a structured learning program to see if they had any insights.

  5. Watched various series by dotnet on YouTube e.g. C# Fundamentals, .NET for front end / for back end

Fruits i.e. results

  • I found that I can pick up things at speed now
  • I found I can work on many of the .NET platforms
  • I overcame all my blockers: I am happy letting .NET hide a lot of the code in the background such as routing, dependency injection etc
  • I am happy to use VS, no longer bothered by how bloated it feels
  • Happy to use C#, happy to be talking objects more regularly
  • Can read projects better
Nuh © 2024